home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Interfaces&Libraries / Universal / Interfaces / ComponentIncludes / QuickTimeMusic.k.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-17  |  27.9 KB  |  553 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        QuickTimeMusic.k.h
  3.  
  4.      Contains:    QuickTime Interfaces.
  5.  
  6.      Version:    Technology:    QuickTime 3.0
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1990-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __QUICKTIMEMUSIC_K__
  18. #define __QUICKTIMEMUSIC_K__
  19.  
  20. #include <QuickTimeMusic.h>
  21.  
  22. /*
  23.     Example usage:
  24.  
  25.         #define QTMIDI_BASENAME()    Fred
  26.         #define QTMIDI_GLOBALS()    FredGlobalsHandle
  27.         #include <QuickTimeMusic.k.h>
  28.  
  29.     To specify that your component implementation does not use globals, do not #define QTMIDI_GLOBALS
  30. */
  31. #ifdef QTMIDI_BASENAME
  32.     #ifndef QTMIDI_GLOBALS
  33.         #define QTMIDI_GLOBALS() 
  34.         #define ADD_QTMIDI_COMMA 
  35.     #else
  36.         #define ADD_QTMIDI_COMMA ,
  37.     #endif
  38.     #define QTMIDI_GLUE(a,b) a##b
  39.     #define QTMIDI_STRCAT(a,b) QTMIDI_GLUE(a,b)
  40.     #define ADD_QTMIDI_BASENAME(name) QTMIDI_STRCAT(QTMIDI_BASENAME(),name)
  41.  
  42.     EXTERN_API( ComponentResult  ) ADD_QTMIDI_BASENAME(GetMIDIPorts) (QTMIDI_GLOBALS() ADD_QTMIDI_COMMA QTMIDIPortListHandle * inputPorts, QTMIDIPortListHandle * outputPorts);
  43.  
  44.     EXTERN_API( ComponentResult  ) ADD_QTMIDI_BASENAME(UseSendPort) (QTMIDI_GLOBALS() ADD_QTMIDI_COMMA long  portIndex, long  inUse);
  45.  
  46.     EXTERN_API( ComponentResult  ) ADD_QTMIDI_BASENAME(SendMIDI) (QTMIDI_GLOBALS() ADD_QTMIDI_COMMA long  portIndex, MusicMIDIPacket * mp);
  47.  
  48.     EXTERN_API( ComponentResult  ) ADD_QTMIDI_BASENAME(UseReceivePort) (QTMIDI_GLOBALS() ADD_QTMIDI_COMMA long  portIndex, MusicMIDIReadHookUPP  readHook, long  refCon);
  49.  
  50.  
  51.     /* MixedMode ProcInfo constants for component calls */
  52.     enum {
  53.         uppQTMIDIGetMIDIPortsProcInfo = 0x00000FF0,
  54.         uppQTMIDIUseSendPortProcInfo = 0x00000FF0,
  55.         uppQTMIDISendMIDIProcInfo = 0x00000FF0,
  56.         uppQTMIDIUseReceivePortProcInfo = 0x00003FF0
  57.     };
  58.  
  59. #endif    /* QTMIDI_BASENAME */
  60.  
  61. /*
  62.     Example usage:
  63.  
  64.         #define MUSIC_BASENAME()    Fred
  65.         #define MUSIC_GLOBALS()    FredGlobalsHandle
  66.         #include <QuickTimeMusic.k.h>
  67.  
  68.     To specify that your component implementation does not use globals, do not #define MUSIC_GLOBALS
  69. */
  70. #ifdef MUSIC_BASENAME
  71.     #ifndef MUSIC_GLOBALS
  72.         #define MUSIC_GLOBALS() 
  73.         #define ADD_MUSIC_COMMA 
  74.     #else
  75.         #define ADD_MUSIC_COMMA ,
  76.     #endif
  77.     #define MUSIC_GLUE(a,b) a##b
  78.     #define MUSIC_STRCAT(a,b) MUSIC_GLUE(a,b)
  79.     #define ADD_MUSIC_BASENAME(name) MUSIC_STRCAT(MUSIC_BASENAME(),name)
  80.  
  81.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetDescription) (MUSIC_GLOBALS() ADD_MUSIC_COMMA SynthesizerDescription * sd);
  82.  
  83.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetPart) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, long * midiChannel, long * polyphony);
  84.  
  85.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetPart) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, long  midiChannel, long  polyphony);
  86.  
  87.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetPartInstrumentNumber) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, long  instrumentNumber);
  88.  
  89.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetPartInstrumentNumber) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part);
  90.  
  91.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(StorePartInstrument) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, long  instrumentNumber);
  92.  
  93.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetPartAtomicInstrument) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, AtomicInstrument * ai, long  flags);
  94.  
  95.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetPartAtomicInstrument) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, AtomicInstrumentPtr  aiP, long  flags);
  96.  
  97.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetInstrumentKnobDescriptionObsolete) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobIndex, void * mkd);
  98.  
  99.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetDrumKnobDescriptionObsolete) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobIndex, void * mkd);
  100.  
  101.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetKnobDescriptionObsolete) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobIndex, void * mkd);
  102.  
  103.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetPartKnob) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, long  knobID);
  104.  
  105.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetPartKnob) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, long  knobID, long  knobValue);
  106.  
  107.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetKnob) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobID);
  108.  
  109.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetKnob) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobID, long  knobValue);
  110.  
  111.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetPartName) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, StringPtr  name);
  112.  
  113.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetPartName) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, StringPtr  name);
  114.  
  115.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(FindTone) (MUSIC_GLOBALS() ADD_MUSIC_COMMA ToneDescription * td, long * libraryIndexOut, unsigned long * fit);
  116.  
  117.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(PlayNote) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, long  pitch, long  velocity);
  118.  
  119.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(ResetPart) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part);
  120.  
  121.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetPartController) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, MusicController  controllerNumber, long  controllerValue);
  122.  
  123.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetPartController) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, MusicController  controllerNumber);
  124.  
  125.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetMIDIProc) (MUSIC_GLOBALS() ADD_MUSIC_COMMA MusicMIDISendUPP * midiSendProc, long * refCon);
  126.  
  127.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetMIDIProc) (MUSIC_GLOBALS() ADD_MUSIC_COMMA MusicMIDISendUPP  midiSendProc, long  refCon);
  128.  
  129.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetInstrumentNames) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  modifiableInstruments, Handle * instrumentNames, Handle * instrumentCategoryLasts, Handle * instrumentCategoryNames);
  130.  
  131.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetDrumNames) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  modifiableInstruments, Handle * instrumentNumbers, Handle * instrumentNames);
  132.  
  133.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetMasterTune) (MUSIC_GLOBALS());
  134.  
  135.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetMasterTune) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  masterTune);
  136.  
  137.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetInstrumentAboutInfo) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, InstrumentAboutInfo * iai);
  138.  
  139.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetDeviceConnection) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  index, long * id1, long * id2);
  140.  
  141.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(UseDeviceConnection) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  id1, long  id2);
  142.  
  143.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetKnobSettingStrings) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobIndex, long  isGlobal, Handle * settingsNames, Handle * settingsCategoryLasts, Handle * settingsCategoryNames);
  144.  
  145.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetMIDIPorts) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long * inputPortCount, long * outputPortCount);
  146.  
  147.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SendMIDI) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  portIndex, MusicMIDIPacket * mp);
  148.  
  149.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(ReceiveMIDI) (MUSIC_GLOBALS() ADD_MUSIC_COMMA MusicMIDIReadHookUPP  readHook, long  refCon);
  150.  
  151.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(StartOffline) (MUSIC_GLOBALS() ADD_MUSIC_COMMA unsigned long * numChannels, UnsignedFixed * sampleRate, unsigned short * sampleSize, MusicOfflineDataUPP  dataProc, long  dataProcRefCon);
  152.  
  153.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetOfflineTimeTo) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  newTimeStamp);
  154.  
  155.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetInstrumentKnobDescription) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobIndex, KnobDescription * mkd);
  156.  
  157.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetDrumKnobDescription) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobIndex, KnobDescription * mkd);
  158.  
  159.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetKnobDescription) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobIndex, KnobDescription * mkd);
  160.  
  161.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetInfoText) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  selector, Handle * textH, Handle * styleH);
  162.  
  163.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetInstrumentInfo) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  getInstrumentInfoFlags, InstrumentInfoListHandle * infoListH);
  164.  
  165.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(Task) (MUSIC_GLOBALS());
  166.  
  167.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetPartInstrumentNumberInterruptSafe) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, long  instrumentNumber);
  168.  
  169.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetPartSoundLocalization) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, Handle  data);
  170.  
  171.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GenericConfigure) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  mode, long  flags, long  baseResID);
  172.  
  173.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GenericGetPart) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  partNumber, GCPart ** part);
  174.  
  175.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GenericGetKnobList) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobType, GenericKnobDescriptionListHandle * gkdlH);
  176.  
  177.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GenericSetResourceNumbers) (MUSIC_GLOBALS() ADD_MUSIC_COMMA Handle  resourceIDH);
  178.  
  179.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(DerivedMIDISend) (MUSIC_GLOBALS() ADD_MUSIC_COMMA MusicMIDIPacket * packet);
  180.  
  181.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(DerivedSetKnob) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobType, long  knobNumber, long  knobValue, long  partNumber, GCPart * p, GenericKnobDescription * gkd);
  182.  
  183.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(DerivedSetPart) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  partNumber, GCPart * p);
  184.  
  185.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(DerivedSetInstrument) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  partNumber, GCPart * p);
  186.  
  187.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(DerivedSetPartInstrumentNumber) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  partNumber, GCPart * p);
  188.  
  189.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(DerivedSetMIDI) (MUSIC_GLOBALS() ADD_MUSIC_COMMA MusicMIDISendUPP  midiProc, long  refcon, long  midiChannel);
  190.  
  191.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(DerivedStorePartInstrument) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  partNumber, GCPart * p, long  instrumentNumber);
  192.  
  193.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(DerivedOpenResFile) (MUSIC_GLOBALS());
  194.  
  195.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(DerivedCloseResFile) (MUSIC_GLOBALS() ADD_MUSIC_COMMA short  resRefNum);
  196.  
  197.  
  198.     /* MixedMode ProcInfo constants for component calls */
  199.     enum {
  200.         uppMusicGetDescriptionProcInfo = 0x000003F0,
  201.         uppMusicGetPartProcInfo = 0x00003FF0,
  202.         uppMusicSetPartProcInfo = 0x00003FF0,
  203.         uppMusicSetPartInstrumentNumberProcInfo = 0x00000FF0,
  204.         uppMusicGetPartInstrumentNumberProcInfo = 0x000003F0,
  205.         uppMusicStorePartInstrumentProcInfo = 0x00000FF0,
  206.         uppMusicGetPartAtomicInstrumentProcInfo = 0x00003FF0,
  207.         uppMusicSetPartAtomicInstrumentProcInfo = 0x00003FF0,
  208.         uppMusicGetInstrumentKnobDescriptionObsoleteProcInfo = 0x00000FF0,
  209.         uppMusicGetDrumKnobDescriptionObsoleteProcInfo = 0x00000FF0,
  210.         uppMusicGetKnobDescriptionObsoleteProcInfo = 0x00000FF0,
  211.         uppMusicGetPartKnobProcInfo = 0x00000FF0,
  212.         uppMusicSetPartKnobProcInfo = 0x00003FF0,
  213.         uppMusicGetKnobProcInfo = 0x000003F0,
  214.         uppMusicSetKnobProcInfo = 0x00000FF0,
  215.         uppMusicGetPartNameProcInfo = 0x00000FF0,
  216.         uppMusicSetPartNameProcInfo = 0x00000FF0,
  217.         uppMusicFindToneProcInfo = 0x00003FF0,
  218.         uppMusicPlayNoteProcInfo = 0x00003FF0,
  219.         uppMusicResetPartProcInfo = 0x000003F0,
  220.         uppMusicSetPartControllerProcInfo = 0x00003FF0,
  221.         uppMusicGetPartControllerProcInfo = 0x00000FF0,
  222.         uppMusicGetMIDIProcProcInfo = 0x00000FF0,
  223.         uppMusicSetMIDIProcProcInfo = 0x00000FF0,
  224.         uppMusicGetInstrumentNamesProcInfo = 0x0000FFF0,
  225.         uppMusicGetDrumNamesProcInfo = 0x00003FF0,
  226.         uppMusicGetMasterTuneProcInfo = 0x000000F0,
  227.         uppMusicSetMasterTuneProcInfo = 0x000003F0,
  228.         uppMusicGetInstrumentAboutInfoProcInfo = 0x00000FF0,
  229.         uppMusicGetDeviceConnectionProcInfo = 0x00003FF0,
  230.         uppMusicUseDeviceConnectionProcInfo = 0x00000FF0,
  231.         uppMusicGetKnobSettingStringsProcInfo = 0x0003FFF0,
  232.         uppMusicGetMIDIPortsProcInfo = 0x00000FF0,
  233.         uppMusicSendMIDIProcInfo = 0x00000FF0,
  234.         uppMusicReceiveMIDIProcInfo = 0x00000FF0,
  235.         uppMusicStartOfflineProcInfo = 0x0003FFF0,
  236.         uppMusicSetOfflineTimeToProcInfo = 0x000003F0,
  237.         uppMusicGetInstrumentKnobDescriptionProcInfo = 0x00000FF0,
  238.         uppMusicGetDrumKnobDescriptionProcInfo = 0x00000FF0,
  239.         uppMusicGetKnobDescriptionProcInfo = 0x00000FF0,
  240.         uppMusicGetInfoTextProcInfo = 0x00003FF0,
  241.         uppMusicGetInstrumentInfoProcInfo = 0x00000FF0,
  242.         uppMusicTaskProcInfo = 0x000000F0,
  243.         uppMusicSetPartInstrumentNumberInterruptSafeProcInfo = 0x00000FF0,
  244.         uppMusicSetPartSoundLocalizationProcInfo = 0x00000FF0,
  245.         uppMusicGenericConfigureProcInfo = 0x00003FF0,
  246.         uppMusicGenericGetPartProcInfo = 0x00000FF0,
  247.         uppMusicGenericGetKnobListProcInfo = 0x00000FF0,
  248.         uppMusicGenericSetResourceNumbersProcInfo = 0x000003F0,
  249.         uppMusicDerivedMIDISendProcInfo = 0x000003F0,
  250.         uppMusicDerivedSetKnobProcInfo = 0x000FFFF0,
  251.         uppMusicDerivedSetPartProcInfo = 0x00000FF0,
  252.         uppMusicDerivedSetInstrumentProcInfo = 0x00000FF0,
  253.         uppMusicDerivedSetPartInstrumentNumberProcInfo = 0x00000FF0,
  254.         uppMusicDerivedSetMIDIProcInfo = 0x00003FF0,
  255.         uppMusicDerivedStorePartInstrumentProcInfo = 0x00003FF0,
  256.         uppMusicDerivedOpenResFileProcInfo = 0x000000F0,
  257.         uppMusicDerivedCloseResFileProcInfo = 0x000002F0
  258.     };
  259.  
  260. #endif    /* MUSIC_BASENAME */
  261.  
  262. /*
  263.     Example usage:
  264.  
  265.         #define INSTRUMENT_BASENAME()    Fred
  266.         #define INSTRUMENT_GLOBALS()    FredGlobalsHandle
  267.         #include <QuickTimeMusic.k.h>
  268.  
  269.     To specify that your component implementation does not use globals, do not #define INSTRUMENT_GLOBALS
  270. */
  271. #ifdef INSTRUMENT_BASENAME
  272.     #ifndef INSTRUMENT_GLOBALS
  273.         #define INSTRUMENT_GLOBALS() 
  274.         #define ADD_INSTRUMENT_COMMA 
  275.     #else
  276.         #define ADD_INSTRUMENT_COMMA ,
  277.     #endif
  278.     #define INSTRUMENT_GLUE(a,b) a##b
  279.     #define INSTRUMENT_STRCAT(a,b) INSTRUMENT_GLUE(a,b)
  280.     #define ADD_INSTRUMENT_BASENAME(name) INSTRUMENT_STRCAT(INSTRUMENT_BASENAME(),name)
  281.  
  282.     EXTERN_API( ComponentResult  ) ADD_INSTRUMENT_BASENAME(GetInst) (INSTRUMENT_GLOBALS() ADD_INSTRUMENT_COMMA long  instID, AtomicInstrument * atomicInst, long  flags);
  283.  
  284.     EXTERN_API( ComponentResult  ) ADD_INSTRUMENT_BASENAME(GetInfo) (INSTRUMENT_GLOBALS() ADD_INSTRUMENT_COMMA long  getInstrumentInfoFlags, InstCompInfoHandle * instInfo);
  285.  
  286.     EXTERN_API( ComponentResult  ) ADD_INSTRUMENT_BASENAME(Initialize) (INSTRUMENT_GLOBALS() ADD_INSTRUMENT_COMMA long  initFormat, void * initParams);
  287.  
  288.     EXTERN_API( ComponentResult  ) ADD_INSTRUMENT_BASENAME(OpenComponentResFile) (INSTRUMENT_GLOBALS() ADD_INSTRUMENT_COMMA short * resFile);
  289.  
  290.     EXTERN_API( ComponentResult  ) ADD_INSTRUMENT_BASENAME(CloseComponentResFile) (INSTRUMENT_GLOBALS() ADD_INSTRUMENT_COMMA short  resFile);
  291.  
  292.     EXTERN_API( ComponentResult  ) ADD_INSTRUMENT_BASENAME(GetComponentRefCon) (INSTRUMENT_GLOBALS() ADD_INSTRUMENT_COMMA void ** refCon);
  293.  
  294.     EXTERN_API( ComponentResult  ) ADD_INSTRUMENT_BASENAME(SetComponentRefCon) (INSTRUMENT_GLOBALS() ADD_INSTRUMENT_COMMA void * refCon);
  295.  
  296.     EXTERN_API( ComponentResult  ) ADD_INSTRUMENT_BASENAME(GetSynthesizerType) (INSTRUMENT_GLOBALS() ADD_INSTRUMENT_COMMA OSType * synthesizerType);
  297.  
  298.  
  299.     /* MixedMode ProcInfo constants for component calls */
  300.     enum {
  301.         uppInstrumentGetInstProcInfo = 0x00003FF0,
  302.         uppInstrumentGetInfoProcInfo = 0x00000FF0,
  303.         uppInstrumentInitializeProcInfo = 0x00000FF0,
  304.         uppInstrumentOpenComponentResFileProcInfo = 0x000003F0,
  305.         uppInstrumentCloseComponentResFileProcInfo = 0x000002F0,
  306.         uppInstrumentGetComponentRefConProcInfo = 0x000003F0,
  307.         uppInstrumentSetComponentRefConProcInfo = 0x000003F0,
  308.         uppInstrumentGetSynthesizerTypeProcInfo = 0x000003F0
  309.     };
  310.  
  311. #endif    /* INSTRUMENT_BASENAME */
  312.  
  313. /*
  314.     Example usage:
  315.  
  316.         #define NA_BASENAME()    Fred
  317.         #define NA_GLOBALS()    FredGlobalsHandle
  318.         #include <QuickTimeMusic.k.h>
  319.  
  320.     To specify that your component implementation does not use globals, do not #define NA_GLOBALS
  321. */
  322. #ifdef NA_BASENAME
  323.     #ifndef NA_GLOBALS
  324.         #define NA_GLOBALS() 
  325.         #define ADD_NA_COMMA 
  326.     #else
  327.         #define ADD_NA_COMMA ,
  328.     #endif
  329.     #define NA_GLUE(a,b) a##b
  330.     #define NA_STRCAT(a,b) NA_GLUE(a,b)
  331.     #define ADD_NA_BASENAME(name) NA_STRCAT(NA_BASENAME(),name)
  332.  
  333.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(RegisterMusicDevice) (NA_GLOBALS() ADD_NA_COMMA OSType  synthType, Str31  name, SynthesizerConnections * connections);
  334.  
  335.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(UnregisterMusicDevice) (NA_GLOBALS() ADD_NA_COMMA long  index);
  336.  
  337.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(GetRegisteredMusicDevice) (NA_GLOBALS() ADD_NA_COMMA long  index, OSType * synthType, Str31  name, SynthesizerConnections * connections, MusicComponent * mc);
  338.  
  339.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SaveMusicConfiguration) (NA_GLOBALS());
  340.  
  341.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(NewNoteChannel) (NA_GLOBALS() ADD_NA_COMMA NoteRequest * noteRequest, NoteChannel * outChannel);
  342.  
  343.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(DisposeNoteChannel) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel);
  344.  
  345.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(GetNoteChannelInfo) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, long * index, long * part);
  346.  
  347.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(PrerollNoteChannel) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel);
  348.  
  349.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(UnrollNoteChannel) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel);
  350.  
  351.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SetNoteChannelVolume) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, Fixed  volume);
  352.  
  353.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(ResetNoteChannel) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel);
  354.  
  355.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(PlayNote) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, long  pitch, long  velocity);
  356.  
  357.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SetController) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, long  controllerNumber, long  controllerValue);
  358.  
  359.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SetKnob) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, long  knobNumber, long  knobValue);
  360.  
  361.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(FindNoteChannelTone) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, ToneDescription * td, long * instrumentNumber);
  362.  
  363.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SetInstrumentNumber) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, long  instrumentNumber);
  364.  
  365.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(PickInstrument) (NA_GLOBALS() ADD_NA_COMMA ModalFilterUPP  filterProc, StringPtr  prompt, ToneDescription * sd, unsigned long  flags, long  refCon, long  reserved1, long  reserved2);
  366.  
  367.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(PickArrangement) (NA_GLOBALS() ADD_NA_COMMA ModalFilterUPP  filterProc, StringPtr  prompt, long  zero1, long  zero2, Track  t, StringPtr  songName);
  368.  
  369.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SetDefaultMIDIInput) (NA_GLOBALS() ADD_NA_COMMA SynthesizerConnections * sc);
  370.  
  371.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(GetDefaultMIDIInput) (NA_GLOBALS() ADD_NA_COMMA SynthesizerConnections * sc);
  372.  
  373.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(UseDefaultMIDIInput) (NA_GLOBALS() ADD_NA_COMMA MusicMIDIReadHookUPP  readHook, long  refCon, unsigned long  flags);
  374.  
  375.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(LoseDefaultMIDIInput) (NA_GLOBALS());
  376.  
  377.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(StuffToneDescription) (NA_GLOBALS() ADD_NA_COMMA long  gmNumber, ToneDescription * td);
  378.  
  379.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(CopyrightDialog) (NA_GLOBALS() ADD_NA_COMMA PicHandle  p, StringPtr  author, StringPtr  copyright, StringPtr  other, StringPtr  title, ModalFilterUPP  filterProc, long  refCon);
  380.  
  381.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(GetIndNoteChannel) (NA_GLOBALS() ADD_NA_COMMA long  index, NoteChannel * nc, long * seed);
  382.  
  383.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(GetMIDIPorts) (NA_GLOBALS() ADD_NA_COMMA QTMIDIPortListHandle * inputPorts, QTMIDIPortListHandle * outputPorts);
  384.  
  385.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(GetNoteRequest) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, NoteRequest * nrOut);
  386.  
  387.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SendMIDI) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, MusicMIDIPacket * mp);
  388.  
  389.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(PickEditInstrument) (NA_GLOBALS() ADD_NA_COMMA ModalFilterUPP  filterProc, StringPtr  prompt, long  refCon, NoteChannel  nc, AtomicInstrument  ai, long  flags);
  390.  
  391.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(NewNoteChannelFromAtomicInstrument) (NA_GLOBALS() ADD_NA_COMMA AtomicInstrumentPtr  instrument, long  flags, NoteChannel * outChannel);
  392.  
  393.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SetAtomicInstrument) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, AtomicInstrumentPtr  instrument, long  flags);
  394.  
  395.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(GetKnob) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, long  knobNumber, long * knobValue);
  396.  
  397.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(Task) (NA_GLOBALS());
  398.  
  399.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SetNoteChannelBalance) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, long  balance);
  400.  
  401.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SetInstrumentNumberInterruptSafe) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, long  instrumentNumber);
  402.  
  403.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SetNoteChannelSoundLocalization) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, Handle  data);
  404.  
  405.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(GetController) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, long  controllerNumber, long * controllerValue);
  406.  
  407.  
  408.     /* MixedMode ProcInfo constants for component calls */
  409.     enum {
  410.         uppNARegisterMusicDeviceProcInfo = 0x00003FF0,
  411.         uppNAUnregisterMusicDeviceProcInfo = 0x000003F0,
  412.         uppNAGetRegisteredMusicDeviceProcInfo = 0x0003FFF0,
  413.         uppNASaveMusicConfigurationProcInfo = 0x000000F0,
  414.         uppNANewNoteChannelProcInfo = 0x00000FF0,
  415.         uppNADisposeNoteChannelProcInfo = 0x000003F0,
  416.         uppNAGetNoteChannelInfoProcInfo = 0x00003FF0,
  417.         uppNAPrerollNoteChannelProcInfo = 0x000003F0,
  418.         uppNAUnrollNoteChannelProcInfo = 0x000003F0,
  419.         uppNASetNoteChannelVolumeProcInfo = 0x00000FF0,
  420.         uppNAResetNoteChannelProcInfo = 0x000003F0,
  421.         uppNAPlayNoteProcInfo = 0x00003FF0,
  422.         uppNASetControllerProcInfo = 0x00003FF0,
  423.         uppNASetKnobProcInfo = 0x00003FF0,
  424.         uppNAFindNoteChannelToneProcInfo = 0x00003FF0,
  425.         uppNASetInstrumentNumberProcInfo = 0x00000FF0,
  426.         uppNAPickInstrumentProcInfo = 0x003FFFF0,
  427.         uppNAPickArrangementProcInfo = 0x000FFFF0,
  428.         uppNASetDefaultMIDIInputProcInfo = 0x000003F0,
  429.         uppNAGetDefaultMIDIInputProcInfo = 0x000003F0,
  430.         uppNAUseDefaultMIDIInputProcInfo = 0x00003FF0,
  431.         uppNALoseDefaultMIDIInputProcInfo = 0x000000F0,
  432.         uppNAStuffToneDescriptionProcInfo = 0x00000FF0,
  433.         uppNACopyrightDialogProcInfo = 0x003FFFF0,
  434.         uppNAGetIndNoteChannelProcInfo = 0x00003FF0,
  435.         uppNAGetMIDIPortsProcInfo = 0x00000FF0,
  436.         uppNAGetNoteRequestProcInfo = 0x00000FF0,
  437.         uppNASendMIDIProcInfo = 0x00000FF0,
  438.         uppNAPickEditInstrumentProcInfo = 0x000FFFF0,
  439.         uppNANewNoteChannelFromAtomicInstrumentProcInfo = 0x00003FF0,
  440.         uppNASetAtomicInstrumentProcInfo = 0x00003FF0,
  441.         uppNAGetKnobProcInfo = 0x00003FF0,
  442.         uppNATaskProcInfo = 0x000000F0,
  443.         uppNASetNoteChannelBalanceProcInfo = 0x00000FF0,
  444.         uppNASetInstrumentNumberInterruptSafeProcInfo = 0x00000FF0,
  445.         uppNASetNoteChannelSoundLocalizationProcInfo = 0x00000FF0,
  446.         uppNAGetControllerProcInfo = 0x00003FF0
  447.     };
  448.  
  449. #endif    /* NA_BASENAME */
  450.  
  451. /*
  452.     Example usage:
  453.  
  454.         #define TUNE_BASENAME()    Fred
  455.         #define TUNE_GLOBALS()    FredGlobalsHandle
  456.         #include <QuickTimeMusic.k.h>
  457.  
  458.     To specify that your component implementation does not use globals, do not #define TUNE_GLOBALS
  459. */
  460. #ifdef TUNE_BASENAME
  461.     #ifndef TUNE_GLOBALS
  462.         #define TUNE_GLOBALS() 
  463.         #define ADD_TUNE_COMMA 
  464.     #else
  465.         #define ADD_TUNE_COMMA ,
  466.     #endif
  467.     #define TUNE_GLUE(a,b) a##b
  468.     #define TUNE_STRCAT(a,b) TUNE_GLUE(a,b)
  469.     #define ADD_TUNE_BASENAME(name) TUNE_STRCAT(TUNE_BASENAME(),name)
  470.  
  471.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetHeader) (TUNE_GLOBALS() ADD_TUNE_COMMA unsigned long * header);
  472.  
  473.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(GetTimeBase) (TUNE_GLOBALS() ADD_TUNE_COMMA TimeBase * tb);
  474.  
  475.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetTimeScale) (TUNE_GLOBALS() ADD_TUNE_COMMA TimeScale  scale);
  476.  
  477.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(GetTimeScale) (TUNE_GLOBALS() ADD_TUNE_COMMA TimeScale * scale);
  478.  
  479.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(GetIndexedNoteChannel) (TUNE_GLOBALS() ADD_TUNE_COMMA long  i, NoteChannel * nc);
  480.  
  481.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(Queue) (TUNE_GLOBALS() ADD_TUNE_COMMA unsigned long * tune, Fixed  tuneRate, unsigned long  tuneStartPosition, unsigned long  tuneStopPosition, unsigned long  queueFlags, TuneCallBackUPP  callBackProc, long  refCon);
  482.  
  483.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(Instant) (TUNE_GLOBALS() ADD_TUNE_COMMA unsigned long * tune, unsigned long  tunePosition);
  484.  
  485.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(GetStatus) (TUNE_GLOBALS() ADD_TUNE_COMMA TuneStatus * status);
  486.  
  487.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(Stop) (TUNE_GLOBALS() ADD_TUNE_COMMA long  stopFlags);
  488.  
  489.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetVolume) (TUNE_GLOBALS() ADD_TUNE_COMMA Fixed  volume);
  490.  
  491.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(GetVolume) (TUNE_GLOBALS());
  492.  
  493.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(Preroll) (TUNE_GLOBALS());
  494.  
  495.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(Unroll) (TUNE_GLOBALS());
  496.  
  497.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetNoteChannels) (TUNE_GLOBALS() ADD_TUNE_COMMA unsigned long  count, NoteChannel * noteChannelList, TunePlayCallBackUPP  playCallBackProc, long  refCon);
  498.  
  499.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetPartTranspose) (TUNE_GLOBALS() ADD_TUNE_COMMA unsigned long  part, long  transpose, long  velocityShift);
  500.  
  501.     EXTERN_API( NoteAllocator  ) ADD_TUNE_BASENAME(GetNoteAllocator) (TUNE_GLOBALS());
  502.  
  503.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetSofter) (TUNE_GLOBALS() ADD_TUNE_COMMA long  softer);
  504.  
  505.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(Task) (TUNE_GLOBALS());
  506.  
  507.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetBalance) (TUNE_GLOBALS() ADD_TUNE_COMMA long  balance);
  508.  
  509.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetSoundLocalization) (TUNE_GLOBALS() ADD_TUNE_COMMA Handle  data);
  510.  
  511.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetHeaderWithSize) (TUNE_GLOBALS() ADD_TUNE_COMMA unsigned long * header, unsigned long  size);
  512.  
  513.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetPartMix) (TUNE_GLOBALS() ADD_TUNE_COMMA unsigned long  partNumber, long  volume, long  balance, long  mixFlags);
  514.  
  515.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(GetPartMix) (TUNE_GLOBALS() ADD_TUNE_COMMA unsigned long  partNumber, long * volumeOut, long * balanceOut, long * mixFlagsOut);
  516.  
  517.  
  518.     /* MixedMode ProcInfo constants for component calls */
  519.     enum {
  520.         uppTuneSetHeaderProcInfo = 0x000003F0,
  521.         uppTuneGetTimeBaseProcInfo = 0x000003F0,
  522.         uppTuneSetTimeScaleProcInfo = 0x000003F0,
  523.         uppTuneGetTimeScaleProcInfo = 0x000003F0,
  524.         uppTuneGetIndexedNoteChannelProcInfo = 0x00000FF0,
  525.         uppTuneQueueProcInfo = 0x003FFFF0,
  526.         uppTuneInstantProcInfo = 0x00000FF0,
  527.         uppTuneGetStatusProcInfo = 0x000003F0,
  528.         uppTuneStopProcInfo = 0x000003F0,
  529.         uppTuneSetVolumeProcInfo = 0x000003F0,
  530.         uppTuneGetVolumeProcInfo = 0x000000F0,
  531.         uppTunePrerollProcInfo = 0x000000F0,
  532.         uppTuneUnrollProcInfo = 0x000000F0,
  533.         uppTuneSetNoteChannelsProcInfo = 0x0000FFF0,
  534.         uppTuneSetPartTransposeProcInfo = 0x00003FF0,
  535.         uppTuneGetNoteAllocatorProcInfo = 0x000000F0,
  536.         uppTuneSetSofterProcInfo = 0x000003F0,
  537.         uppTuneTaskProcInfo = 0x000000F0,
  538.         uppTuneSetBalanceProcInfo = 0x000003F0,
  539.         uppTuneSetSoundLocalizationProcInfo = 0x000003F0,
  540.         uppTuneSetHeaderWithSizeProcInfo = 0x00000FF0,
  541.         uppTuneSetPartMixProcInfo = 0x0000FFF0,
  542.         uppTuneGetPartMixProcInfo = 0x0000FFF0
  543.     };
  544.  
  545. #endif    /* TUNE_BASENAME */
  546.  
  547. #if TARGET_RT_LITTLE_ENDIAN
  548. #else
  549. #endif
  550.  
  551. #endif /* __QUICKTIMEMUSIC_K__ */
  552.  
  553.